class CountFunc(object):
    def __init__(self):
        pass

    @staticmethod
    def add(a, b) -> float:
        """
        计算两个数的和。
        参数:
        a (float): 第一个数。
        b (float): 第二个数。
        返回:
        float: 两个数的和。
        """
        return a + b

    @staticmethod
    def factorial(n) -> int:
        """
        计算一个数的阶乘。
        参数:
        n (int): 要计算阶乘的数。
        返回:
        int: n的阶乘。
        """
        if n < 0:
            raise ValueError("Factorial is not defined for negative numbers.")  # 处理负数
        result = 1
        for i in range(1, n + 1):
            result *= i
        return result

    @staticmethod
    def fun24(a, b, c, d):
        """
        计算24点游戏的结果。
        参数:
        a (float): 第一个数。
        b (float): 第二个数。
        c (float): 第三个数。
        d (float): 第四个数。
        返回:
        bool: 是否存在满足24点游戏的结果。
        """
        from itertools import permutations

        # 定义所有可能的运算符组合
        operators = ['+', '-', '*', '/']
        numbers = [a, b, c, d]

        # 生成所有可能的数字排列
        for num_perm in permutations(numbers):
            # 生成所有可能的运算符组合
            for op1 in operators:
                for op2 in operators:
                    for op3 in operators:
                        # 所有可能的括号组合
                        expressions = [
                            f'(({num_perm[0]}{op1}{num_perm[1]}){op2}{num_perm[2]}){op3}{num_perm[3]}',
                            f'({num_perm[0]}{op1}({num_perm[1]}{op2}{num_perm[2]})){op3}{num_perm[3]}',
                            f'{num_perm[0]}{op1}(({num_perm[1]}{op2}{num_perm[2]}){op3}{num_perm[3]})',
                            f'{num_perm[0]}{op1}({num_perm[1]}{op2}({num_perm[2]}{op3}{num_perm[3]}))',
                            f'({num_perm[0]}{op1}{num_perm[1]}){op2}({num_perm[2]}{op3}{num_perm[3]})'
                        ]
                        for expr in expressions:
                            try:
                                # 计算表达式的值
                                result = eval(expr)
                                # 判断结果是否接近24
                                if abs(result - 24) < 1e-6:
                                    return True
                            except ZeroDivisionError:
                                continue
        return False
